package com.lpf.streamAPI;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

import org.junit.Test;

@SuppressWarnings("ALL")
public class StreamAPI_Create {

	/**
	 * 1. 创建 Stream
	 */
	@Test
	public void createStream() {
		/**
		 * 1. Collection 提供了两个方法 stream() 与 parallelStream()
		 */
		List<String> list = new ArrayList<>();
		Stream<String> lsStream = list.stream(); // 获取一个顺序流
		Stream<String> lsParallelStream = list.parallelStream(); // 获取一个并行流

		/**
		 * 2. 通过 Arrays 中的 stream() 获取一个数组流
		 */
		Integer[] nums = new Integer[10];
		Stream<Integer> arrayStream = Arrays.stream(nums);

		/**
		 * 3. 通过 Stream 类中静态方法 of()
		 */
		Stream<Integer> intStream = Stream.of(1, 2, 3, 4, 5, 6);

		/**
		 * 4. 创建无限流
		 */
		// 迭代
		Stream<Integer> stream3 = Stream.iterate(0, (x) -> x + 2).limit(10);
		stream3.forEach(System.out::println);

		// 生成
		Stream<Double> stream4 = Stream.generate(Math::random).limit(2);
		stream4.forEach(System.out::println);
	}
}
